home *** CD-ROM | disk | FTP | other *** search
- #ifndef _NUB_
- #define _NUB_
-
- #include <Files.h>
- #include <MacTypes.h>
- #include "VersionNumber.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-
- typedef pascal OSStatus (*NubLoadProcPtr)(Handle code);
- typedef pascal OSStatus (*NubUnloadProcPtr)(Handle *code);
-
- #if GENERATINGCFM
- typedef UniversalProcPtr NubLoadUPP;
- typedef UniversalProcPtr NubUnloadUPP;
- #else
- typedef NubLoadProcPtr NubLoadUPP;
- typedef NubUnloadProcPtr NubUnloadUPP;
- #endif
-
- enum {
- uppNubLoadProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(Handle))),
- uppNubUnloadProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER(1,SIZE_CODE(sizeof(Handle*)))
- };
-
- #if GENERATINGCFM
- #define NewNubLoadProc(userRoutine) (NubLoadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppNubLoadProcInfo,GetCurrentArchitecture())
- #define NewNubUnloadProc(userRoutine) (NubUnloadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),uppNubUnloadProcInfo,GetCurrentArchitecture())
- #else
- #define NewNubLoadProc(userRoutine) ((NubLoadUPP)(userRoutine))
- #define NewNubUnloadProc(userRoutine) ((NubUnloadUPP)(userRoutine))
- #endif
-
- #if GENERATINGCFM
- #define CallNubLoadProc(userRoutine,code) CallUniversalProc((UniversalProcPtr)(userRoutine),uppNubLoadProcInfo,(code))
- #define CallNubUnloadProc(userRoutine,code) CallUniversalProc((UniversalProcPtr)(userRoutine),uppNubUnloadProcInfo,(code))
- #else
- #define CallNubLoadProc(userRoutine,code) (*(NubLoadProcPtr)(userRoutine))((code))
- #define CallNubUnloadProc(userRoutine,code) (*(NubUnloadProcPtr)(userRoutine))((code))
- #endif
-
-
- #define kNubSelector 'DD2x'
- #define kNubVersion ((kMajorVersion << 24) | (kMinorVersion << 16) | (kReleaseStage << 8) | kNonFinalReleaseNumber)
- #define kNubCompatible 0x00000000
- #define kNubSignature kNubSelector
-
-
- typedef struct NubInfo
- {
- UInt32 signature; // Set if installed and active, otherwise NULL.
- NumVersion version; // Version that is currently installed.
- NumVersion compatible; // Backwards compatible to this version.
- struct PatchDesc *patchList; // Linked list of patch descriptors.
-
- NubUnloadUPP unloadProc; // Deactivate and unload from memory.
- UInt8 filler[128]; // Extra space...just in case...
- } NubInfo;
-
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* _NUB_ */
-